#include <Arduino.h>

#ifndef _USB_Client_Connector_H
#define _USB_Client_Connector_H

class USBClientConnectorCallbacks {
  public:
    virtual void usb_onConnect(uint8_t usbNum, bool &flag) { ; }
    virtual void usb_onConfigDevice(uint8_t usbNum, int32_t type, void *param) { ; }
};

// BLE HID
class USBClientConnector {
  public:
    uint8_t usbNum = -1;    // USB设备号
    char _name[30] = {0};   // 设备名称
    int _type = 0;          //  (0:未知  1：键盘 2:鼠标)
    int _keyboard_mode = 0; // 0: 美式键盘; 1:日式键盘
    int _status = 0;        // 连接状态    (-1:连接失败 0:未连接 1:已连接 2：已识别(HID))
  private:
    int _cntFail = 0; // 尝试失败次数

    USBClientConnectorCallbacks *_pCallbacks; // 事件通知对象

  public:
    void destory();
    void clear();
    void connectToDevice();
    std::string readValue();

    void setUSBClientConnectorCallbacks(USBClientConnectorCallbacks *pCallbacks);
};

#endif
